Version 0.6.0
- Modified relaying of events to relay player events through the amaroK player instead of through the amaroK proxy
- Separated Observable into a distinct separate module
- Separated amaroKProxy into a distinct module
- Trapping SIP/Qt mismatch errors now


Version 0.5.0:
- Tempo dialog box has been revamped and now it preserves more state when changing tempo of tracks
- Corrected stupid bug that happened for SQLite users
- Corrected bug when determining the upcoming tracks number
- Do not show "collection has been fully analyzed" if it's the first time it runs or if there is no collection
# POR FAVOR EDITAR ESTO UNA VEZ QUE ESTE SOLUCIONADO EL PROBLEMA DE UTF-8 CON ESTE BRIDGE
- Implemented a general master/slave DCOP bridge for use with FC4's kdebindings (which for Python only include DCOP bridges as a module named pydcop).  This bridge is also ~10 times faster than the old communication system for normal operation.  This bridge is now the default DCOP communication system, with the old one being used as a fallback when pydcop/kdebindings is not available.  The master/slave approach using UNIX sockets was sadly required to work around a problem in the pydcop bridge, which when imported would make Smart DJ crash because it would create an additional QApplication, which is a no-no.  The bridge works like this: the master marshals and sends parameters to the slave via the socket, and the slave unmarshals, uses pydcop to find out what's to do, and marshals the response back to the master.
- When a song cannot be analyzed, or its analysis is in progress, the context browser reports these events, and now special characters are wrapped for submission to the context browser, so no eventualities present themselves with tracks which have special characters embedded.


Version 0.4.0:
- General cleanup of the code base
- Implemented object-oriented notification system between objects: all objects which need to monitor other objects utilize the observer/observable pattern
- Implemented full amaroK DCOP bindings abstraction
- Changed LEAST and GREATEST SQL sentences to MAX and MIN when using SQLite
- GTK+ interface removed
- Accelerators on every user interface window
- Fixed some incumbent bugs
- Fixed bug where paths with URL-forbidden characters (?) fail to be added to the playlist
- Changed precision in similarity display for similar song search


Version 0.3.6
- Autodetecting database type and basing quoting on database type (MySQL and SQLite quote strings differently)


Version 0.3.5
- A new tempo setting dialog has been incorporated to Smart DJ, letting you tap the tempo and offering you the choice of the newly estimated tempo, or a factor of the original tempo (for songs that have already been analyzed, this is the most accurate tempo value)
- Corrected some signal connection errors (the timeout(void) famous error) in PyQt user interface


Version 0.3.4
- Corrected absolute path bug in context browser monitor job
- Trapped ValueErrors in get_similar_songs


Version 0.3.3
- Corrected small bug in def associate() processing which impeded certain songs from advancing the process
- Caused configuration window to show only once, and raise itself it is shown already
- Added WhatsThis information for all visible controls in the dialogs for the Qt interface
- Changed "songs" for "tracks" everywhere, to conform to amaroKspeak more
- Added "add to playlist" and "search similar tracks" in Qt interface search window, and double-click handler for search window resultsView widget as well
- Changed dragndrop handler in search window to work with URIs instead of paths
- Changed sys.getfilesystemencoding() to locale.getpreferredencoding() everywhere
- Qt interface: corrected a bug in the handling of changing smart playlist selection in the config window
- New option "Use the last song I liked" for Auto DJ mode
- Similar tracks box in context browser now displays what criteria is used for the search


Version 0.3.2
- Corrected a bug in Playlist which caused it to be reread OK but not emptied when rereading
- Made the PyQt config dialog user interface more nice and understandable
- Made operation during Auto DJ inspection loop more verbose (use status bar messages to explain what's going on)
- Made status messages more conformant to amaroK's style
- Made more status messages to announce Auto DJ is operating, and what it is doing
- Cleaned up song analysis loop


Version 0.3.1 - 17/11/05 02:36
- Trap errors produced in PyQt UI
- Correct various sync errors and objects not being destroyed at the right times (deadlocks!)
- Trap errors produced by not being able to search in PyQt UI (nice msgboxes)


Version 0.3.0 16/11/05 16:24
- Nearly fully implemented UI in PyQt


Version 0.2.0 - 15/11/05 01:04
- Split several separate functionalities in different packages
- Added another (blazingly fast) implementation of DCOP communication based on kdebindings
- Auto create database schema
- Added search window option to search for a fixed tempo
- A number of optimizations
- Added controls to let Auto DJ choose songs from the entire collection or from a Smart playlist
- Made similar track information appear in the Context Browser, Current tab
- Made Auto DJ consider for exclusion only tracks currently in the playlist and tracks that were auto-added but removed manually by the user
- Initial public release